package DtoFactory;

import java.util.Date;
import java.util.List;
import java.util.Vector;

import Entities.CotizacionBean;
import Entities.FacturaBean;
import Entities.ItemCotizacionBean;
import Entities.ItemFacturaBean;
import Entities.ItemSolicitudCompraBean;
import Entities.RodamientoBean;
import Entities.SolicitudComprasBean;
import EntitiesDTO.CotizacionDTO;
import EntitiesDTO.FacturaDTO;
import EntitiesDTO.ItemCotizacionDTO;
import EntitiesDTO.ItemFacturaDTO;
import EntitiesDTO.ItemSolicitudCotizacionDTO;
import EntitiesDTO.RodamientoDTO;
import EntitiesDTO.SolicitudCompraDTO;

public class FactoryDTO {
	private static FactoryDTO instance;
	
	
	private FactoryDTO(){
		
	}
	public static FactoryDTO getInstance(){
		if(instance==null){
			instance= new FactoryDTO();
		}
		return instance;
	}

	public RodamientoDTO inflateRodamientoDTO(RodamientoBean rodam){
		RodamientoDTO rodamiento = new RodamientoDTO();
		rodamiento.setCaracteristica(rodam.getCaracteristica());
		rodamiento.setCodigo(rodam.getCodigo());
		rodamiento.setIdRodamiento(rodam.getIdRodamiento());
		rodamiento.setMarca(rodam.getMarca());
		rodamiento.setOrigen(rodam.getOrigen());
		return rodamiento;
	}
	
	public RodamientoBean inflateRodamientoBean(RodamientoBean rodam){
		RodamientoBean rodamiento = new RodamientoBean();
		rodamiento.setCaracteristica(rodam.getCaracteristica());
		rodamiento.setCodigo(rodam.getCodigo());
		rodamiento.setIdRodamiento(rodam.getIdRodamiento());
		rodamiento.setMarca(rodam.getMarca());
		rodamiento.setOrigen(rodam.getOrigen());
		return rodamiento;
	}
	
	public CotizacionBean inflacteCotizacion(CotizacionDTO cot) {
		CotizacionBean cotiza = new CotizacionBean();
		cotiza.setFechaEmision(cot.getFechaemision());
		cotiza.setFechaVencimiento(cot.getFechavencimiento());
		cotiza.setIdCotizacion(cot.getNumeroCotizacion());
		cotiza.setPrecioTotal(cot.getPrecioTotal());
		List<ItemCotizacionBean> items= new Vector<ItemCotizacionBean>();
		for(ItemCotizacionDTO itemsC: cot.getItemsCotizacion()){
			ItemCotizacionBean itemBean = new ItemCotizacionBean();
			itemBean.setCantidad(itemsC.getCantidad());
			itemBean.setPrecioUnitario(itemsC.getPrecionUnitario());
			itemBean.setPrecioFinal(itemsC.getPrecioFinal());
			RodamientoBean rodam = new RodamientoBean();
			rodam.setCodigo(itemsC.getRodamiento().getCodigo());
			itemBean.setRodamiento(rodam);
			items.add(itemBean);
		}
		cotiza.setItemsCotizacion(items);
		return cotiza;
	}
	
	
	public FacturaBean inflacteFacturacion(FacturaDTO fac) {
		FacturaBean  fact = new FacturaBean();
		fact.setFechaEmision(fac.getFechaEmision());
		fact.setIdFactura(fac.getIdFactura());
		fact.setIva(fac.getIva());
		fact.setSubtotal(fac.getSubtotal());
		fact.setTipofactura(fac.getTipofactura());
		fact.setTotal(fac.getTotal());
		
		List<ItemFacturaBean> items= new Vector<ItemFacturaBean>();
		for(ItemFacturaDTO itemsC: fac.getItemsFactura()){
			ItemFacturaBean itemBean = new ItemFacturaBean();
			itemBean.setCantidad(itemsC.getCantidad());
			itemBean.setPrecioTotal(itemsC.getPrecioTotal());
			itemBean.setPrecioUnitario(itemsC.getPrecioUnitario());
			RodamientoBean rodam = new RodamientoBean();
			rodam.setCodigo(itemsC.getRodamiento().getCodigo());
			itemBean.setRodamiento(rodam);
			items.add(itemBean);
			
		}
		fact.setItemsFactura(items);
		return fact;
	}
	public SolicitudComprasBean inflateCompra(SolicitudCompraDTO s) {
		SolicitudComprasBean sol = new SolicitudComprasBean();
		sol.setFechaEmision(new Date());
		List<ItemSolicitudCompraBean> items = new Vector<ItemSolicitudCompraBean>();
		for(ItemSolicitudCotizacionDTO i: s.getItemsSolicitudCotizacion()){
			ItemSolicitudCompraBean item = new ItemSolicitudCompraBean();
			item.setCantidad(i.getCantidad());
			RodamientoBean rodam = new RodamientoBean();
			rodam.setCodigo(i.getRodamiento().getCodigo());
			item.setRodamiento(rodam);
			items.add(item);
		}
		sol.setItemsSolicitud(items);
		return sol;
	}
	
	
}

